// ObserverSwarm
// by Mina Jung @ syracuse university
// April 2010



#import <simtoolsgui.h>
#import <analysis.h> // EZGraph
#import "TossimModelSwarm.h"

#import <simtoolsgui/GUISwarm.h>

@interface TossimObserverSwarm: GUISwarm
{
  int displayFrequency;				// one parameter: update freq
  int drawBatteryGraph;
  int drawCurrentGraph;
  int drawMessageGraph;
  int drawCurrentHistogram;
  int drawRadioCurrentGraph;
  int timeSecond;


  id displayActions;				// schedule data structs
  id displaySchedule;

  TossimModelSwarm *tossimModelSwarm;	  	// the Swarm we're observing

  // Lots of display objects. First, widgets

  id <Colormap> colormap;			// allocate colours
  id <ZoomRaster> worldRaster;			// 2d display widget


  id <EZGraph> batteryGraph;			// graphing widget
  id <EZGraph> currentGraph;			// graphing widget
  id <EZGraph> radioCurrentGraph;			// graphing widget
  id <EZBin>   currentHistogram;
  id <EZGraph> msgGraph;
  
  // Now, higher order display and data objects

  id <Value2dDisplay> envDisplay;		// display environment 
  id <Object2dDisplay> moteDisplay;	        // display the motes
  id <ZoomRaster> batteryRaster;
}

// Methods overriden to make the Swarm.

+ createBegin: aZone;
- createEnd;
- buildObjects;
- buildActions;
- (id <Activity>)activateIn: swarmContext;

@end
